<?php

if (!defined ('EXPLAY')) exit;

print '
<h3>Шаг 1 &mdash; проверка и настройка сервера</h3>
<h3>Шаг 2 &mdash; настройка подключения к БД</h3>
<h2>Шаг 3 &mdash; загрузка информации в БД, завершение установки</h2>';

$error = '';


$server = $_POST['server'];
$dbname = $_POST['db_name'];
$dbusername = $_POST['db_username'];
$dbpassword = $_POST['db_password'];

$admin_login = $_POST['admin_login'];
$admin_pass = $_POST['admin_pass'];
$admin_pass2 = $_POST['admin_pass2'];
$admin_name = $_POST['admin_name'];
$admin_email = $_POST['admin_email'];

if (isset($_POST['submit'])) {
	if ($server == '' || $dbname == '' || $dbusername == '')
		$error .= "\r\n<li>Не заполнена вся информация о базе данных!</li>";
	
	if ($admin_login == '' || $admin_pass == '' || ($admin_pass != $admin_pass2) || $admin_name == '' || $admin_email == '')
		$error .= "\r\n<li>Проверьте правильность ввода данных администратора!</li>";
	
	if (strlen($admin_login) < 4 || strlen($admin_login) > 16)
		$error .= "\r\n<li>Логин должен быть длиной от 4 до 16 символов!</li>";
	
	if (strlen($admin_pass) < 4 || strlen($admin_pass) > 16)
		$error .= "\r\n<li>Пароль должен быть длиной от 4 до 16 символов!</li>";

	
	$mysqlconnect = @mysql_connect ($server, $dbusername, $dbpassword);
	if (!$mysqlconnect) $error .= "\r\n<li>Ошибка подключения к серверу MySQL!</li>";

	$mysqlselect = @mysql_select_db ($dbname, $mysqlconnect);
	if (!$mysqlselect) $error .= "\r\n<li>Ошибка подключения к базе данных</li>";

}
else $error .= "\r\n<li>Ошибка при передаче данных!</li>";

if ($error != '') {
	print '
<p style="color:red"><br />Обнаружены следующие ошибки:<ul>'.$error.'</ul><a href="javascript:history.back()">Вернуться назад</a></p>';
	include 'footer.php';
	exit;
}

$mysql_version = mysql_get_server_info();
if (version_compare($mysql_version, '4.1', ">=")) mysql_query("/*!40101 SET NAMES 'utf8' */");

$file = $_SERVER['DOCUMENT_ROOT'].'/installer/install/mysql.sql';

if (!file_exists ($file))
	exit ('<p style="color:red">Файла, необходимого для продолжения установки (installer/install/mysql.sql) не существует!</p>');

$ms = fopen ($_SERVER['DOCUMENT_ROOT'].'/installer/install/mysql.sql', 'r');
$mysql = fread ($ms, filesize($file));
fclose ($ms);

$array = explode (';', $mysql);
$count = count ($array);
$count_errors = 0;
$mError = '';

for ($i=0; $i<$count; $i++) {
	if (!mysql_query($array[$i])) {
		$mError .= "\r\n<li>".mysql_error()."<p />".$array[$i]."</li>";
		$count_errors++;	
	}
}

$file = fopen ($_SERVER['DOCUMENT_ROOT'].'/engine/settings.php', 'w');
fwrite ($file, '<?
$server = "'.$server.'";
$dbusername = "'.$dbusername.'";
$dbpassword = "'.$dbpassword.'";
$dbname = "'.$dbname.'";
define ("DB_PEREFIX", "expl");');
fclose ($file);

if (!mysql_query("INSERT INTO expl_users VALUES (
											0,
											'$admin_login',
											'".expl_hash($admin_pass)."',
											'$admin_name',
											'admin',
											'1',
											'$admin_email',
											'',
											'',
											'".time()."',
											'',
											'off',
											'0',
											'0',
											'off',
											'',
											'',
											'".time()."',
											'0',
											'0',
											'',
											'',
											'',
											'',
											'',
											'',
											'',
											'')")) {
	$mError .= "\r\n<li>".mysql_error()."</li>";
	$count_errors++;	
}





if ($count_errors == 0) {
	
	umask (0000);
	chmod ($_SERVER['DOCUMENT_ROOT'].'/installer', 0777);
	$file = fopen ('block.install', 'w+');
	fclose ($file);
	
	print '
<p align="center"><br />Установка завершена успешно! Теперь Вы можете перейти к настройке сайта</p>
<p><strong>Внимание!</strong> Текущая дириктория (<em>installer</em>) заблокирована. Это сделано в целях безопасности. Для разблокировки удалите файл <em>installer/block.install</em> .</p>
<p>
	<form style="text-align:center" action="/admin.php" method="post">
	<input type="submit" value="Продолжить" />
	</form>
</p>';
} else {
	print '
<p style="color:red"><br />В ходе установки таблиц в БД возникли следующие ошибки:<ul>'.$mError.'</ul></p>
<p>Рекомедруется их исправить и повторить установку, предварительно удалив установленные таблицы из БД.</p>';
}



function expl_hash($str) {
	if (function_exists('sha1'))
		return sha1($str); 
	elseif (function_exists('mhash'))
		return bin2hex(mhash(MHASH_SHA1, $str));
	else
		return md5($str);
}
